#ifndef LINKEDQUEUE_H
#define LINKEDQUEUE_H

#include "stdio.h"
#include "stdlib.h"

typedef int ElemType;

typedef struct node {
    ElemType data;
    struct node* next;
} Node;

typedef struct LinkedQueue {
    Node* front;
    Node* rear;
} LinkedQueue;

LinkedQueue* init_queue();

Node* create_node(ElemType data);

int is_empty(LinkedQueue* queue);

int size(LinkedQueue* queue);

void enqueue(LinkedQueue* queue, ElemType data);

ElemType dequeue(LinkedQueue* queue);

ElemType front(LinkedQueue* queue);

void dequeue_all(LinkedQueue* queue);

void clear_queue(LinkedQueue* queue);

#endif  // !LINKEDQUEUE_H